There are many computing scenarios in which computer software applications issue I/O requests on behalf of multiple clients, such as operating systems, web applications, database servers, etc. For example, in the context of a database system, database servers use various types of system resources on behalf of applications that the servers are servicing. Such system resources include, for example, CPU, memory, network, and I/O resources. While processor speeds have increased as much as tenfold in recent years, the speed of a disk drive has barely doubled in the last decade or so. Now, the overall performance of a database system, for example, is typically more bound by I/O than any other resource type, and the overall throughput of the system is determined by the speed of the slowest component in the system. Hence, when the I/O subsystem is not managed correctly, the overall throughput of the system suffers.
Common problems for Information Technology administrators include (a) a particular application itself issues too many I/Os (input/output or read/write requests), placing undue stress on the storage system, and/or (b) a specific workload, application, or session within the system issues too many I/Os, negatively interfering with the performance of other users. Administrators may handle problem (a) in multiple ways, most typically by dedicating storage exclusively to an application to avoid any interference from other applications. Alternatively, administrators may utilize a storage system whose performance capabilities provide sufficient capacity for all applications sharing the storage. Administrators face a more difficult challenge with handling problem (b), whereby the administrators may separate heavily-conflicting workloads onto separate systems. A common example in the database context is configuring separate OLTP (online transaction processing) and reporting databases, however, this solution requires that the data in these separate databases be synchronized. Administrators may also require I/O intensive jobs to be run at off-peak hours, or may only allow a certain number of I/O intensive users to be concurrently logged onto the system. Furthermore, many tools, such as data backup applications, slow down the workload issued to the storage system. In all of the foregoing approaches, the administrator has to “manually” enforce the I/O usage of the application and of the individual users.
The approaches described in this section are approaches that could be pursued, but not necessarily approaches that have been previously conceived or pursued. Therefore, unless otherwise indicated, it should not be assumed that any of the approaches described in this section qualify as prior art merely by virtue of their inclusion in this section.